Coalescing Conditional Branches into Efficient Indirect Jumps
نویسندگان
چکیده
Indirect jumps from tables are traditionally only generated by compilers as an intermediate code generation decision when translating multiway selection statements. However, making this decision during intermediate code generation poses problems. The research described in this paper resolves these problems by using several types of static analysis as a framework for a code improving transformation that exploits indirect jumps from tables. First, control-ow analysis is performed that provides opportunities for coalescing branches generated from other control statements besides multiway selection statements. Second, the optimizer uses various techniques to reduce the cost of indirect jump operations by statically analyzing the context of the surrounding code. Finally, path and branch prediction analysis is used to provide a more accurate estimation of the beneet of coalescing a detected set of branches into a single indirect jump. The results indicate that the coalescing transformation can be frequently applied with signiicant reductions in the number of instructions executed and total cache work. This paper shows that static analysis can be used to implement an eeective improving transformation for exploiting indirect jumps.
منابع مشابه
Effectively Exploiting Indirect Jumps
This dissertation describes a general code-improving transformation that can coalesce conditional branches into an indirect jump from a table. Applying this transformation allows an optimizer to exploit indirect jumps for many other coalescing opportunities besides the translation of multiway branch statements. First, data ow analysis is performed to detect a set of coalescent conditional branc...
متن کاملE ectively Exploiting Indirect Jumps
This paper describes a general code-improving transformation that can coalesce conditional branches into an indirect jump from a table. Applying this transformation allows an optimizer to exploit indirect jumps for many other coalescing opportunities besides the translation of multiway branch statements. First, dataaow analysis is performed to detect a set of coalescent conditional branches, wh...
متن کاملAdvanced Techniques for Improving Indirect Branch Prediction Accuracy
Deep pipelines and fast clock rates are necessitating the development of high accuracy branch predictors. From microarchitectural viewpoint, in the last decade the importance of indirect branch prediction increased even though, in the computing programs the indirect jumps remain less frequent than the more predictable conditional branches. One reason refers to predicative execution that implies...
متن کاملRegister Indirect Jump Target Forwarding
Object-oriented languages have recently become common, making register indirect jumps more important than ever. In objectoriented languages, virtual functions are heavily used because they improve programming productivity greatly. Virtual function calls usually consist of register indirect jumps, and consequently, programs written in objectoriented languages contain many register indirect jumps...
متن کاملA Comprehensive Front-End Architecture for the VeriSimple Alpha Pipeline
The performance of a pipelined computer system depends heavily on the degree of Instruction Level Parallelism (ILP) obtained. Pipeline stalling or flushing due to unpredicted or mispredicted branch instructions has become a significant bottleneck to achieving high ILP. A good branch predictor can reduce the number of such stalls and flushes and is therefore critical to the performance of modern...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1997